package br.uvv.Dao;

import java.util.List;

import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.primefaces.model.SortOrder;

import br.uvv.Model.Contato;
import br.uvv.Util.DAOException;

@SuppressWarnings("unchecked")
public class ContatoDAO extends DAO {

	private static final long serialVersionUID = 1644593689725160930L;

	public Contato selecionar(Long id) throws DAOException {
		return (Contato) get(Contato.class, id);
	}
	
	public List<Contato> listar() throws DAOException {
		return (List<Contato>) list(Contato.class, null);
	}
	
	public void salvar(Contato contatoInstance) throws DAOException {
		save(contatoInstance, contatoInstance.getId());
	}
	
	public void remover(Contato contatoInstance) throws DAOException {
		delete(Contato.class, contatoInstance.getId());
	}
	
	public List<Contato> listar(int first, int pageSize, String sortField, 
			SortOrder sortOrder, String nome) throws DAOException{
		Criterion[] filtros = { Restrictions.ilike("nome", "%" + nome + "%") };
		return (List<Contato>) listPaginator(first, pageSize, sortField, sortOrder, Contato.class, null, filtros);
	}
	
	public Integer count(String nome) throws DAOException {
		Criterion[] filtros = { Restrictions.ilike("nome", "%" + nome + "%") };
		return rowCount(Contato.class, filtros);
	}
}
